From 09947a63ed563777d2655d1833cca56798583809 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 9 Dec 2015 12:42:33 +0100 Subject: [PATCH] wayland: Make gdk_wayland_device_get_focus() work on touch So we can figure out the focus for the master device. https://bugzilla.gnome.org/show_bug.cgi?id=759309 --- gdk/wayland/gdkdevice-wayland.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index fbff72ba1b..baf40bfb65 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -488,12 +488,17 @@ device_emit_grab_crossing (GdkDevice *device, static GdkWindow * gdk_wayland_device_get_focus (GdkDevice *device) { - GdkWaylandDeviceData *wayland_device = GDK_WAYLAND_DEVICE (device)->device; - - if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) - return wayland_device->keyboard_focus; + GdkWaylandSeat *wayland_seat = GDK_WAYLAND_DEVICE (device)->device; + + if (device == wayland_seat->master_keyboard) + return wayland_seat->keyboard_focus; + else if (device == wayland_seat->master_pointer) + return wayland_seat->pointer_focus; + else if (device == wayland_seat->touch_master && + GDK_WAYLAND_DEVICE(device)->emulating_touch) + return GDK_WAYLAND_DEVICE(device)->emulating_touch->window; else - return wayland_device->pointer_focus; + return NULL; } static GdkGrabStatus -- 2.30.2